Below is a reference of available buttons for assignment (following standard XInput/Virtual-Key definitions, but slightly extended)
You absolutely *must* assign them with strings and not in any other way (e.g. decimal/hex numbers).

For each event you may assign only 1 button.

Inline comments are NOT allowed in the configuration file for string reads! So this includes all button assignments!

=== BASICS ===

Format is as follows:

[Events]
EVENT = BUTTON_NAME
...

[EventsKB]
EVENT = KEYBOARD_KEY_NAME
...

=== XINPUT ===

It should be pretty self-explanatory.
List of available buttons:

XINPUT_GAMEPAD_DPAD_UP       
XINPUT_GAMEPAD_DPAD_DOWN     
XINPUT_GAMEPAD_DPAD_LEFT     
XINPUT_GAMEPAD_DPAD_RIGHT    
XINPUT_GAMEPAD_START         
XINPUT_GAMEPAD_BACK          
XINPUT_GAMEPAD_LEFT_THUMB    
XINPUT_GAMEPAD_RIGHT_THUMB   
XINPUT_GAMEPAD_LEFT_SHOULDER (or XINPUT_GAMEPAD_LB)
XINPUT_GAMEPAD_RIGHT_SHOULDER (or XINPUT_GAMEPAD_RB)
XINPUT_GAMEPAD_A             
XINPUT_GAMEPAD_B             
XINPUT_GAMEPAD_X             
XINPUT_GAMEPAD_Y             
XINPUT_GAMEPAD_LT     
XINPUT_GAMEPAD_RT     
XINPUT_GAMEPAD_LS_X   
XINPUT_GAMEPAD_LS_Y  
XINPUT_GAMEPAD_RS_X  
XINPUT_GAMEPAD_RS_Y   
XINPUT_GAMEPAD_DPAD  -- assignable ONLY to JOY_EVENT_STEER
XINPUT_GAMEPAD_LS_UP -- stick directions are DIGITAL ONLY
XINPUT_GAMEPAD_LS_DOWN	
XINPUT_GAMEPAD_LS_LEFT
XINPUT_GAMEPAD_LS_RIGHT
XINPUT_GAMEPAD_RS_UP
XINPUT_GAMEPAD_RS_DOWN
XINPUT_GAMEPAD_RS_LEFT
XINPUT_GAMEPAD_RS_RIGHT

=== KEYBOARD ===

Keyboard assignments should follow the Virtual-Key Code definitions (you can find them here: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes)
Type their definition names in directly (e.g. if you want to assign the Return key, just use VK_RETURN directly in the config file)
For single letter assignments, type the letter in as-is (e.g. if you want to assign the 'G' key, just use G)

=== Event list ===

Below is a full list of available events in the game which you may assign. 
They trigger at various points in the game (whenever their handlers are generated), but not all of them actually work.
Reminder that some events are assigned only to the SECOND controller, such as debug camera actions.
Both ports are monitored for XInput separately, whereas on keyboard they're not (unless you enable the second player with second keyboard!)

NOTE: some events (such as quitting with Q key or launching the tutorial video with LT) are hardcoded due to the way they're coded in the game

== STEER INPUT SPECIAL NOTES ==

Due to the buggy nature of the steer input handler, its code had to be rewritten.
This *only* affects regular races, as drag races use a different event.
This also enables higher resolution readout from the gamepad axis, as well as the ability to assign steering to both the analog axis and the digital buttons.

These are the special assignments available for steering input (gamepad):
SteerLeftButton -- you may only assign buttons to these, not analog axis
SteerRightButton
SteerLeftAxis -- you may only assign analog axis to these, not buttons
SteerRightAxis

These are the special assignments available for steering input (keyboard):
KeyboardSteerLeft
KeyboardSteerRight

== REGULAR EVENTS ==

JOY_EVENT_NULL
JOY_EVENT_TYPE_CHANGED
JOY_EVENT_EXIT_DEMO_DISC
JOY_EVENT_SCROLL_UP
JOY_EVENT_SCROLL_DOWN
JOY_EVENT_SCROLL_LEFT
JOY_EVENT_SCROLL_RIGHT
JOY_EVENT_FENG_START 
JOY_EVENT_FENG_BUTTON0 
JOY_EVENT_FENG_BUTTON1 
JOY_EVENT_FENG_BUTTON2 
JOY_EVENT_FENG_BUTTON3 
JOY_EVENT_FENG_LTRIGGER 
JOY_EVENT_FENG_RTRIGGER 
JOY_EVENT_FENG_SELECT 
JOY_EVENT_FENG_SELECT_ALTERNATE 
JOY_EVENT_FENG_CANCEL 
JOY_EVENT_FENG_CANCEL_ALTERNATE 
JOY_EVENT_FENG_HELP 
JOY_EVENT_FENG_PAD_UP 
JOY_EVENT_FENG_PAD_DOWN 
JOY_EVENT_FENG_PAD_LEFT 
JOY_EVENT_FENG_PAD_RIGHT 
JOY_EVENT_FENG_PAD_UP_ALTERNATE 
JOY_EVENT_FENG_PAD_DOWN_ALTERNATE 
JOY_EVENT_FENG_PAD_LEFT_ALTERNATE 
JOY_EVENT_FENG_PAD_RIGHT_ALTERNATE 
JOY_EVENT_FENG_QUIT 
JOY_EVENT_FENG_RACEOPTIONS 
JOY_EVENT_START
JOY_EVENT_SELECT
JOY_EVENT_MENU_SELECT
JOY_EVENT_MENU_CANCEL
JOY_EVENT_MENU_BACK
JOY_EVENT_MENU_HELP
JOY_EVENT_MENU_L1
JOY_EVENT_MENU_L2
JOY_EVENT_MENU_R1
JOY_EVENT_MENU_R2 
JOY_EVENT_MENU_SQUARE 
JOY_EVENT_MENU_ANALOG_LEFT 
JOY_EVENT_MENU_ANALOG_RIGHT 
JOY_EVENT_MENU_ANALOG_UP 
JOY_EVENT_MENU_ANALOG_DOWN 
JOY_EVENT_SKIP_DEMO_MODE 
JOY_EVENT_MAIN_MENU_SELECT_TRANSMISSION 
JOY_EVENT_ANY 
JOY_EVENT_EXIT_EDIT_TEXT 
JOY_EVENT_CLEAR_TEXT 
JOY_EVENT_CANCEL_EDIT_TEXT 
JOY_EVENT_DELETE_CHAR 
JOY_EVENT_ROTATE_LETTER_UP 
JOY_EVENT_ROTATE_LETTER_DOWN 
JOY_EVENT_PREV_CHAR 
JOY_EVENT_NEXT_CHAR 
JOY_EVENT_CARSEL_CHANGE_MODE 
JOY_EVENT_CARSEL_UNLOCK 
JOY_EVENT_CARSEL_ORBIT_LEFT 
JOY_EVENT_CARSEL_ORBIT_RIGHT 
JOY_EVENT_CARSEL_ORBIT_UP 
JOY_EVENT_CARSEL_ORBIT_DOWN 
JOY_EVENT_CARSEL_ORBIT_LEFTRIGHT 
JOY_EVENT_CARSEL_ORBIT_UPDOWN -- inverted axis
JOY_EVENT_CARSEL_ORBIT_INOUT 
JOY_EVENT_CARSEL_ORBIT_IN 
JOY_EVENT_CARSEL_ORBIT_OUT 
JOY_EVENT_CHANGE_DEBUG_CAMERA 
JOY_EVENT_DEBUG_CAMERA_ROTATE_RIGHT 
JOY_EVENT_DEBUG_CAMERA_ROTATE_LEFT 
JOY_EVENT_DEBUG_CAMERA_ROTATE_UP 
JOY_EVENT_DEBUG_CAMERA_ROTATE_DOWN 
JOY_EVENT_DEBUG_CAMERA_MOVE_CLOSER 
JOY_EVENT_DEBUG_CAMERA_MOVE_FARTHER 
JOY_EVENT_DEBUG_CAMERA_NEXT_CAR 
JOY_EVENT_DEBUG_CAMERA_PREV_CAR 
JOY_EVENT_DEBUG_CAMERA_FOLLOW_CHOPPER 
JOY_EVENT_DEBUG_CAMERA_TURN_LEFT 
JOY_EVENT_DEBUG_CAMERA_TURN_RIGHT 
JOY_EVENT_DEBUG_CAMERA_TURN_DOWN 
JOY_EVENT_DEBUG_CAMERA_TURN_UP 
JOY_EVENT_DEBUG_CAMERA_MOVE_DOWN 
JOY_EVENT_DEBUG_CAMERA_MOVE_UP 
JOY_EVENT_DEBUG_CAMERA_MOVE_FWD 
JOY_EVENT_DEBUG_CAMERA_MOVE_BACK 
JOY_EVENT_DEBUG_CAMERA_MOVE_LEFT 
JOY_EVENT_DEBUG_CAMERA_MOVE_RIGHT 
JOY_EVENT_DEBUG_CAMERA_TURBO 
JOY_EVENT_DEBUG_CAMERA_SUPER_TURBO 
JOY_EVENT_DEBUG_CAMERA_SLOW 
JOY_EVENT_DEBUG_CAMERA_FORWARD_BLINK 
JOY_EVENT_DEBUG_CAMERA_BACKWARD_BLINK 
JOY_EVENT_DEBUG_CAMERA_DROP_CAR 
JOY_EVENT_DEBUG_CAMERA_ROTATE_LEFTRIGHT 
JOY_EVENT_DEBUG_CAMERA_ROTATE_UPDOWN 
JOY_EVENT_DEBUG_CAMERA_STRAFE_LEFTRIGHT 
JOY_EVENT_DEBUG_CAMERA_INOUT -- inverted axis
JOY_EVENT_TRACKROUTE_EDITOR_TURN_LEFTRIGHT 
JOY_EVENT_TRACKROUTE_EDITOR_TURN_UPDOWN 
JOY_EVENT_TRACKROUTE_EDITOR_DRIVE_FORWARDBACKWARD 
JOY_EVENT_TRACKROUTE_EDITOR_DRIVE_LEFTRIGHT 
JOY_EVENT_TRACKROUTE_EDITOR_DRIVE_TURBO 
JOY_EVENT_TRACKROUTE_EDITOR_MOVE_UP 
JOY_EVENT_TRACKROUTE_EDITOR_MOVE_DOWN 
JOY_EVENT_TRACKROUTE_EDITOR_DPAD_UP 
JOY_EVENT_TRACKROUTE_EDITOR_DPAD_DOWN 
JOY_EVENT_TRACKROUTE_EDITOR_DPAD_LEFT 
JOY_EVENT_TRACKROUTE_EDITOR_DPAD_RIGHT 
JOY_EVENT_TRACKROUTE_EDITOR_NEXT_ROUTE 
JOY_EVENT_TRACKROUTE_EDITOR_NEXT_POINT 
JOY_EVENT_TRACKROUTE_EDITOR_PREV_POINT 
JOY_EVENT_TRACKROUTE_EDITOR_RESET_POS 
JOY_EVENT_TRACKROUTE_EDITOR_EDIT_RIGHT_WIDTH 
JOY_EVENT_TRACKROUTE_EDITOR_EDIT_LEFT_WIDTH 
JOY_EVENT_TRACKROUTE_EDITOR_EDIT_POSITION 
JOY_EVENT_TOGGLE_TRACK_MARKER 
JOY_EVENT_CAMERA_POV_CHANGE 
JOY_EVENT_CAMERA_LOOKBACK 
JOY_EVENT_ZONE_FREEZE -- HP2 - works as intended
JOY_EVENT_ZONE_PREVIEW -- HP2 - works as intended
JOY_EVENT_ZONE_SLOMO -- HP2 - works as intended
JOY_EVENT_ZONE_WARP 
JOY_EVENT_REPLAY_SKIP 
JOY_EVENT_REPLAY_PAUSE 
JOY_EVENT_REPLAY_PREVIOUS_MARKER 
JOY_EVENT_REPLAY_NEXT_MARKER 
JOY_EVENT_REPLAY_PLAYBACK_SPEED 
JOY_EVENT_REPLAY_CAMERA_ANGLE 
JOY_EVENT_REPLAY_CAMERA_TARGET 
JOY_EVENT_REPLAY_HELP 
JOY_EVENT_REPLAY_HIDE_TIMELINE 
JOY_EVENT_REPLAY_MARK_DEMO 
JOY_EVENT_REPLAY_TEST_DEMO 
JOY_EVENT_REPLAY_ERASE_DEMO 
JOY_EVENT_STEER -- steer input is NOT handled by the game code, therefore this event is not read
JOY_EVENT_STEER_ANALOG -- same as previous steer event - not handled by game code, not parsed
JOY_EVENT_THROTTLE 
JOY_EVENT_THROTTLE_ANALOG 
JOY_EVENT_THROTTLE_ANALOG_ALTERNATE 
JOY_EVENT_BRAKE 
JOY_EVENT_BRAKE_ANALOG 
JOY_EVENT_BRAKE_ANALOG_ALTERNATE 
JOY_EVENT_REVERSE 
JOY_EVENT_REVERSE_ANALOG 
JOY_EVENT_EBRAKE 
JOY_EVENT_EBRAKE_ANALOG 
JOY_EVENT_SHIFTUP 
JOY_EVENT_SHIFTDOWN 
JOY_EVENT_SHIFTUP_ALTERNATE 
JOY_EVENT_SHIFTDOWN_ALTERNATE 
JOY_EVENT_DISENGAGE_CLUTCH 
JOY_EVENT_DISENGAGE_CLUTCH_ANALOG 
JOY_EVENT_RESET_CAR 
JOY_EVENT_HONK_HORN -- works but code for playing the honk is missing. If restored, this will work just fine (same for AI).
JOY_EVENT_NITRO_BOOST 
JOY_EVENT_NITRO_BOOST_ALTERNATE 
JOY_EVENT_REQUEST_ROADBLOCK 
JOY_EVENT_REQUEST_HELICOPTER 
JOY_EVENT_FIRE_ROCKET 
JOY_EVENT_AIM_ROCKET_LR 
JOY_EVENT_AIM_ROCKET_UD 
JOY_EVENT_AIM_ZOOM 
JOY_EVENT_AUTO_PILOT 
JOY_EVENT_DRAG_RACE_CHANGE_LANE_LEFT 
JOY_EVENT_DRAG_RACE_CHANGE_LANE_RIGHT 
JOY_EVENT_DRAG_RACE_CHANGE_LANE_LEFT_ANALOG -- very broken, not advised to use, it goes full left or right, stick to the digital versions above
JOY_EVENT_DRAG_RACE_CHANGE_LANE_RIGHT_ANALOG 
JOY_EVENT_CYCLE_HUD 
JOY_EVENT_PAUSE 
JOY_EVENT_SKIP 
